/*
 * @Author: 晟松
 * @Date: 2021-12-08 14:57:00
 * @LastEditors: 晟松
 * @LastEditTime: 2022-02-04 13:26:09
 * @FilePath: \mini-vue3d:\Code\node\koa2\volunteer-service\src\main\util\EnumsUtil.js
 * @Description: 对enums的一些转换，主要用于数据库查到数字，转为字符，前端传来字符，转为数字
 */
import enums from "@main/config/enums";
/**
 * @description: 传入数字，返回对应字符串或undefined
 * @param {*} num 传入的数字
 * @param {*} type enums的type
 * @return {*}
 */
export function toEnumStr(num, type) {
    return enums[type][num];
}
/**
 * @description:
 * @param {*} str
 * @param {*} type
 * @return {*}
 */
export function toEnumNum(str, type) {
    return enums[type][str];
}
/**
 * @description: 对一个对象里面的所有涉及enums的值，如identity，gender这些进行一个number变为string的转换
 * @param {*} data
 * @return {*}
 */
export function enumsToTrans(data) {
    function transOne(data, key, enumType) {
        // 确保为number类型才进行转换，不然string类型已存在的有些麻烦
        if (data[key] && typeof data[key] == "number") {
            data[key] = toEnumStr(data[key], enumType);
        }
        return transOne;
    }
    // 数组每一个都进行处理
    if (Array.isArray(data)) {
        data.forEach((item) => {
            item &&
                transOne(item, "identity", "identity")(item, "initiatorIdentity", "identity")(item, "recipientIdentity", "identity")(
                    item,
                    "fromIdentity",
                    "identity"
                )(item, "toIdentity", "identity")(item, "gender", "gender");
        });
    } else {
        // 目前主要是转换身份和性别，其他的不用了
        data &&
            transOne(data, "identity", "identity")(data, "initiatorIdentity", "identity")(data, "recipientIdentity", "identity")(
                data,
                "fromIdentity",
                "identity"
            )(data, "toIdentity", "identity")(data, "gender", "gender");
    }
}
